
/*
1. 输入：“get1_install2_app3_list4_by5_android6”（每个单词后面总会携带一个数字，只有偶数才删掉），我不用循环只用正则怎么实现输出"get1InstallApp3ListBy5Android"？
2. 不能使用任何循环控制语句和迭代器的情况下实现一个0到1000的数组赋值。
3. 判断两个对象（注意特殊对象的处理）找出不一致的是哪个变量，返回的格式类似："root变量-父变量-...-不一致的变量"的字符串；
*/
var str = 'get1_install2_app3_list4_by5_and16';
function regFn(str){
    var reg1 = /_([a-w]{1})/g;  
    var reg2 = /_|(\d*[02468]+)/g;
    str = str.replace(reg1, function(all, letter){
        return letter.toUpperCase();
    });
    var res = str.replace(reg2,"");
    return res;
}
console.log(regFn(str));
// 2. Array.from(arrayLike[, mapFn[, thisArg]])
/*
参数
    arrayLike 想要转换成数组的伪数组对象或可迭代对象。
    mapFn 可选，如果指定了该参数，新数组中的每个元素会执行该回调函数。
    thisArg 可选，可选参数，执行回调函数 mapFn 时 this 对象。
返回值
    一个新的数组实例。
*/
console.log(Array.from(new Array(21),(item, i)=>i));
// 3.
let obj1 = {a: 1, b: 2, c: {c: 1}};
let obj2 = {a: 2, b: 2, c: {c: 3}};

let result = [];
function diff(a,b){
    let aProps = Object.keys(a);
    let bProps = Object.keys(b);
    for (let i = 0; i < aProps.length; i++) {
        let aCompare = a[aProps[i]];
        let isExist = false;
        for (let j = 0; j < bProps.length; j++) {
            let bCompare = b[bProps[j]];
            if (JSON.stringify(aCompare) === JSON.stringify(bCompare)) {
                isExist = true;
                break;
            }else if(aCompare.constructor === Object || bCompare.constructor === Object){
                diff(aCompare,bCompare);
                break;
            }
        }
        console.log(isExist, aProps[i])
        if (!isExist) {
            result.push(aProps[i]);
        }
    }
    return result;
}
// root变量-父变量-...-不一致的变量
console.log(diff(obj1,obj2))
